﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.Threading;

namespace Server
{
    public class SocketServer
    {
        AuktionsService auktionsService = new AuktionsService();

        TcpListener listener;        

        public SocketServer(int port)
        {
            // socketserver bliver startet op så klienter kan logge på
            IPHostEntry host;
            // tager IP-adressen fra serveren og skriver til konsollen
            string localIP = "?";
            host = Dns.GetHostEntry(Dns.GetHostName());
            foreach (IPAddress ip in host.AddressList)
                if (ip.AddressFamily.ToString() == "InterNetwork")
                    localIP = ip.ToString();
            IPAddress ipadresse = IPAddress.Parse(localIP);
            Console.WriteLine("Server er startet på port:" + port + " " + ipadresse);
            listener = new TcpListener(ipadresse, port);
            listener.Start();

            System.Console.WriteLine("Server startet op");
        }

        public void run()
        {
            while (true)
            {
                // starter ny socket op i ny tråd
                Socket clientSocket = listener.AcceptSocket();

                System.Console.WriteLine("Klient logget på");

                ClientHandler klientHandler = new ClientHandler(clientSocket, auktionsService);

                Thread KlientTråd = new Thread(klientHandler.RunClient);

                KlientTråd.Start();
            }
        }
    }
}
